The present invention is generally related to the processing of multiple streams of received datagrams, and more specifically related to the association of each received datagram with a respective endpoint based on a transport address pair.
Sharing of information between networked computers is typically handled in a layered fashion, with each layer responsible for a different aspect of the information transfer and providing a foundation for more application specific tasks performed by higher levels. Between the various network-oriented hardware which forms the lowermost physical network layer and the various application-oriented software which forms the application layer there is typically provided a network communication layer (the IP protocol in the specific case of the Internet and internet-compatible networks), which provides a means of identifying network nodes and routing a datagram from a particular source node to a particular destination node. The actual contents of the datagram typically includes data that is associated not just to a particular node, but also to a particular process or endpoint associated with that node. Thus, the Network layer is typically followed by a Transport layer which defines an end to end connection between a particular process (or “source endpoint”) at the source node and a corresponding process (or “destination endpoint”) at the destination node.
In the case of the Internet, a Transport layer can utilize several different protocols, the best known of which is the Transmission Control Protocol (or simply “TCP”). TCP provides not only a means of associating individual processes at a particular node into respective “ports”, but also a means of reliably transporting a stream of information packets (“datagrams”) over an underlying Internet Protocol (or simply “IP”) layer from a source endpoint to a destination endpoint, with each TCP/IP logical “connection” being defined by a pair of source and destination transport addresses each consisting of an associated IP address and port number.
Stream Control Transmission Protocol (or “SCTP”) is a more advanced transmission protocol which is capable of transmitting multiple related streams between a source port at the transmitting node and a destination port at the receiving node preferably using multiple IP addresses at one or both nodes to thereby define a single logical SCTP “association”. SCTP's provision for multiple related streams between the same two logical endpoints facilitates adaptive bandwidth and error correction for real-time information having components with differing priorities, while its provision for multiple IP addresses facilitates routing changes during transmission due to congestion or hardware malfunctions at the source or the destination. All transport addresses at the same end of an SCTP association must use the same port number, but can use different IP addresses. A transport address at either end of an active SCTP association must not be used by another active SCTP association. Thus, although each active SCTP association may be associated with multiple transport address pairs, all the transport address pairs of the same active SCTP association are uniquely associated with only one local SCTP endpoint.
The use of port numbers in the TCP and SCTP protocols to distinguish between logically independent streams of information that may be concurrently originating from a common source and/or destined to a common destination greatly enhances the utility of the network without adding substantially to the overhead information being transported between the two nodes. In practice, a unique port number assignment is typically not permanently established for each instance of each process, but rather a given port number will typically be associated with different processes (or different instances of the same process) at different times (or even with more than one concurrent connection, in the case of TCP), and thus there is no simple correlation between the source and destination Transport Addresses contained in the datagram header, and the local process or endpoint for which the received datagram is intended. In particular, in the case of TCP, the same destination Transport Address can be associated with more than one destination endpoint, while in the case of SCTP, the same destination endpoint can be associated with more than one destination Transport Address. Moreover, there is a possibility of “bogus” datagrams being received at the same local port as a genuine datagram, but from a different source.